/**
 * @param {number[][]} grid
 * @return {number}
 */
 var minPathSum = function(grid) {  // 动态规划，res[i][j]+=min(res[i-1][j],res[i][j-1])
    let row_length=grid.length,col_length=grid[0].length;
    // 边缘处理，有两种解决方案
    // 1. 提前处理 
    // for(let i=1;i<row_length;i++){
    //     grid[i][0]+=grid[i-1][0];
    // }
    // for(let j=1;j<col_length;j++){
    //     grid[0][j]+=grid[0][j-1];
    // }
    // for(let i=1;i<row_length;i++){
    //     for(let j=1;j<col_length;j++){
    //         grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);
    //     }
    // }
    // 2. 循环筛选 速度稍微快一点
    for(let i=0;i<row_length;i++){
        for(let j=0;j<col_length;j++){
            if(i==0 && j==0){
                continue ;
            }
            else if(i==0){
                grid[i][j]+=grid[i][j-1];
            }
            else if(j==0){
                grid[i][j]+=grid[i-1][j];
            }
            else{
                grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);
            }
        }
    }
    return grid[row_length-1][col_length-1];
};